// 测试用例：mocha，should，istanbul

// 学习使用测试框架 mocha : http://mochajs.org/
// 学习使用断言库 should : https://github.com/tj/should.js
// 学习使用测试率覆盖工具 istanbul : https://github.com/gotwarlost/istanbul
// 简单 Makefile 的编写 : http://blog.csdn.net/haoel/article/details/2886


// 编写 fibonacci 函数

var fibonacci = function (n) {
    if (typeof n !== "number") {
        throw new Error('n should be a Number');
    }
    if (n < 0) {
        throw new Error('n should >= 0');
    }
    if (n > 10) {
        throw new Error('n should <= 10');
    }
    if (n === 0) {
        return 0;
    }
    if (n === 1) {
        return 1;
    }

    return fibonacci(n - 1) + fibonacci(n - 2);
}

exports.fibonacci = fibonacci;

if (require.app === module) {
  var n = Number(process.argv[2]);
  console.log('fibonacci(' + n + ') is', fibonacci(n));
}